﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SPM.DTL;

namespace SPM.DAL
{
    /**
     *       Autor: Michael S. Sampaio
     *        Data: 13/11/2008 17:00
     *   Descricao: Classe que realiza o acesso a dados da entidade Voluntario.  
     */
    public class VoluntarioDao:DataAccessObject<VoluntarioDto>
    {
        /**
         *  Método responsavel por bindar no objeto item(VoluntariorDto) 
         *  as informações resgatadas do banco(reader)
         */
        internal override void FillDto(System.Data.IDataReader reader, VoluntarioDto item)
        {
            item.Id = (int)reader["idVoluntario"];
            item.Nome = (string)reader["nome"];
            item.Endereco = (string)reader["endereco"];
            item.Bairro = (string)reader["bairro"];
            item.TelefoneResidencial = (string)reader["telefoneResidencial"];
            item.TelefoneCelular = (string)reader["telefoneCelular"];
            item.Rg = (string)reader["rgVolunrario"];
            item.Profissao = (string)reader["profissaoVoluntario"];
            item.DtNacimento = (string)reader["dataNascimento"];
            item.DtCadastro = (string)reader["dataCadastro"];
        }

        /**
         *  Método responsavel por retornar o nome da tabela
         *  correspondente a entitade manipulada.
         */ 
        public override string TableName
        {
            get { return "voluntario"; }
        }

        protected override System.Data.IDbCommand CreateUpdateCommand(int id, VoluntarioDto voluntario)
        {
            string sqlUpdate = String.Format("UPDATE VOLUNTARIO SET nome='{0}', endereco='{1}', bairro={2}, telefoneResidencial='{3}'," +
                 "telefoneCelular='{4}', rgVoluntario='{5}', profissaoVoluntario='{6}', dataNascimento='{7}', dataCadastro='{8}' "+
                 "WHERE idBeneficiario={9}",voluntario.Nome,voluntario.Endereco,voluntario.Bairro,voluntario.TelefoneResidencial,
                 voluntario.TelefoneCelular,voluntario.Rg,voluntario.Profissao,voluntario.DtNacimento,voluntario.DtCadastro,voluntario.Id );

            return factory.CreateCommand(sqlUpdate);

        }

        protected override VoluntarioDto CreateItemFromReader(System.Data.IDataReader reader)
        {
            VoluntarioDto voluntario = new VoluntarioDto();

            voluntario.Id = (int)reader["idVoluntario"];
            voluntario.Nome = (string)reader["nome"];
            voluntario.Endereco = (string)reader["endereco"];
            voluntario.Bairro = (string)reader["bairro"];
            voluntario.TelefoneResidencial = (string)reader["telefoneResidencial"];
            voluntario.TelefoneCelular = (string)reader["telefoneCelular"];
            voluntario.Rg = (string)reader["rgVolunrario"];
            voluntario.Profissao = (string)reader["profissaoVoluntario"];
            voluntario.DtNacimento = (string)reader["dataNascimento"];
            voluntario.DtCadastro = (string)reader["dataCadastro"];

            return voluntario;
        }

        protected override System.Data.IDbCommand CreateInsertCommand(VoluntarioDto voluntario)
        {
            string sqlInsert = String.Format("INSERT INTO {0} (nome, endereco, bairro, telefoneResidencial," +
                   " telefoneCelular, rgVoluntario, profissaoVoluntario, dataNascimento, dataCadasntro)"+
                   " VALUES ('{1}','{2}',{3},'{4}','{5}','{6}')", TableName, voluntario.Nome, voluntario.Endereco,
                   voluntario.Bairro, voluntario.TelefoneResidencial, voluntario.TelefoneCelular, voluntario.Rg, 
                   voluntario.Profissao, voluntario.DtNacimento, voluntario.DtCadastro);

            return factory.CreateCommand(sqlInsert);   
        }
    }
}
